import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
import 'package:sqflite/sqlite_api.dart';
import 'package:ty_smart_watch/entity/connected_device_entity.dart';

class DbUtil{

  // 定义一个异步函数来获取数据库路径
  Future<String> _getDatabasePath(String dbName) async {
    // 获取应用的文档目录
    final directory = await getApplicationDocumentsDirectory();
    // 拼接路径
    final path = join(directory.path, dbName);
    return path;
  }

  Future<Database> getDatabase() async {
    // 获取数据库路径
    final path = await _getDatabasePath('my_db.db');
    // 打开数据库
    final database = openDatabase(
      path,
      version: 1,
      // 当数据库第一次被创建时，执行创建表的操作
      onCreate: (db, version) {
        return db.execute(
          "CREATE TABLE my_table(id INTEGER PRIMARY KEY, address TEXT, name TEXT, lastConnectTimeStamp INTEGER, content1 TEXT, content2 TEXT)",
        );
      },
    );
    return database;
  }

  Future<void> insertData(ConnectedDeviceEntity data, Database db) async {
    try {
      // 插入数据到数据库
      await db.insert(
        'my_table',
        data.toMap(),
        // 如果插入的数据与已有数据冲突（例如，两个数据有相同的主键），则替换旧数据
        conflictAlgorithm: ConflictAlgorithm.replace,
      );
    } catch (e) {
      // 打印错误信息
      print('Failed to insert data: $e');
    }
  }

  Future<List<Map<String, dynamic>>> getAllDevice() async {
    final db = await getDatabase();
    // 查询所有数据
    return await db.query('my_table');
  }


}